﻿using System;
using System.Diagnostics.Contracts;

namespace Library
{
    public interface ICloneableDepth : ICloneable
    {
        [Pure]
        object Clone(Depth depth);
    }

    public interface ICloneableAccess : ICloneable
    {
        [Pure]
        object Clone(Access access);
    }

    public interface ICloneableDepthAccess : ICloneableDepth, ICloneableAccess
    {
        [Pure]
        object Clone(Depth depth, Access access);
    }

    public interface ICloneableDirection : ICloneable
    {
        [Pure]
        object Clone(Direction direction);
    }

    public interface ICloneableDirectionAccess : ICloneableDirection, ICloneableAccess
    {
        [Pure]
        object Clone(Direction direction, Access access);
    }
}
